﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
using Character;
using RootMotion.FinalIK;
using SEXY;
using UnityEngine;

namespace Studio
{
	// Token: 0x02000488 RID: 1160
	public class OCIChar : ObjectCtrlInfo
	{
		// Token: 0x170002D5 RID: 725
		// (get) Token: 0x06001C7F RID: 7295 RVA: 0x000B7620 File Offset: 0x000B5820
		public OICharInfo oiCharInfo
		{
			get
			{
				return this.objectInfo as OICharInfo;
			}
		}

		// Token: 0x170002D6 RID: 726
		// (get) Token: 0x06001C80 RID: 7296 RVA: 0x000B7630 File Offset: 0x000B5830
		public CharFileStatus charStatus
		{
			get
			{
				return this.charInfo.fileStatus;
			}
		}

		// Token: 0x170002D7 RID: 727
		// (get) Token: 0x06001C81 RID: 7297 RVA: 0x000B7640 File Offset: 0x000B5840
		public DynamicBone[] hairDynamic
		{
			get
			{
				return this.charInfo.human.hairs.dynamicBone;
			}
		}

		// Token: 0x170002D8 RID: 728
		// (get) Token: 0x06001C82 RID: 7298 RVA: 0x000B7658 File Offset: 0x000B5858
		public VoiceCtrl voiceCtrl
		{
			get
			{
				return this.oiCharInfo.voiceCtrl;
			}
		}

		// Token: 0x170002D9 RID: 729
		// (get) Token: 0x06001C83 RID: 7299 RVA: 0x000B7668 File Offset: 0x000B5868
		// (set) Token: 0x06001C84 RID: 7300 RVA: 0x000B7678 File Offset: 0x000B5878
		public VoiceCtrl.Repeat voiceRepeat
		{
			get
			{
				return this.voiceCtrl.repeat;
			}
			set
			{
				this.voiceCtrl.repeat = value;
			}
		}

		// Token: 0x170002DA RID: 730
		// (get) Token: 0x06001C85 RID: 7301 RVA: 0x000B7688 File Offset: 0x000B5888
		// (set) Token: 0x06001C86 RID: 7302 RVA: 0x000B7690 File Offset: 0x000B5890
		private int neckPtnOld { get; set; }

		// Token: 0x06001C87 RID: 7303 RVA: 0x000B769C File Offset: 0x000B589C
		public override void OnDelete()
		{
			Singleton<GuideObjectManager>.Instance.Delete(this.guideObject, true);
			this.voiceCtrl.Stop();
			for (int i = 0; i < 2; i++)
			{
				UnityEngine.Object.Destroy(this.hands[i]);
			}
			foreach (OCIChar.BoneInfo boneInfo in this.listBones)
			{
				Singleton<GuideObjectManager>.Instance.Delete(boneInfo.guideObject, true);
			}
			foreach (OCIChar.IKInfo ikinfo in this.listIKTarget)
			{
				Singleton<GuideObjectManager>.Instance.Delete(ikinfo.guideObject, true);
			}
			Singleton<GuideObjectManager>.Instance.Delete(this.lookAtInfo.guideObject, true);
			Studio.DeleteInfo(this.objectInfo, true);
		}

		// Token: 0x06001C88 RID: 7304 RVA: 0x000B77B8 File Offset: 0x000B59B8
		public override void OnAttach(TreeNodeObject _parent, ObjectCtrlInfo _child)
		{
			int num = -1;
			if (!this.dicAccessoryPoint.TryGetValue(_parent, out num))
			{
				GlobalData.Debug_LogWarning("应该不可能");
				return;
			}
			if (_child.parentInfo == null)
			{
				Studio.DeleteInfo(_child.objectInfo, false);
			}
			else
			{
				_child.parentInfo.OnDetachChild(_child);
			}
			if (!this.oiCharInfo.child[num].Contains(_child.objectInfo))
			{
				this.oiCharInfo.child[num].Add(_child.objectInfo);
			}
			string name = Enum.GetName(typeof(OICharInfo.AccessoryPoint), num);
			GameObject referenceInfo = this.charInfo.GetReferenceInfo((CharReference.RefObjKey)Enum.Parse(typeof(CharReference.RefObjKey), name));
			_child.guideObject.transformTarget.SetParent(referenceInfo.transform);
			_child.guideObject.parent = referenceInfo.transform;
			_child.objectInfo.changeAmount.pos = _child.guideObject.transformTarget.localPosition;
			_child.objectInfo.changeAmount.rot = _child.guideObject.transformTarget.localEulerAngles;
			_child.parentInfo = this;
		}

		// Token: 0x06001C89 RID: 7305 RVA: 0x000B78F0 File Offset: 0x000B5AF0
		public override void OnLoadAttach(TreeNodeObject _parent, ObjectCtrlInfo _child)
		{
			int num = -1;
			if (!this.dicAccessoryPoint.TryGetValue(_parent, out num))
			{
				GlobalData.Debug_LogWarning("应该不可能");
				return;
			}
			if (_child.parentInfo == null)
			{
				Studio.DeleteInfo(_child.objectInfo, false);
			}
			else
			{
				_child.parentInfo.OnDetachChild(_child);
			}
			if (!this.oiCharInfo.child[num].Contains(_child.objectInfo))
			{
				this.oiCharInfo.child[num].Add(_child.objectInfo);
			}
			string name = Enum.GetName(typeof(OICharInfo.AccessoryPoint), num);
			GameObject referenceInfo = this.charInfo.GetReferenceInfo((CharReference.RefObjKey)Enum.Parse(typeof(CharReference.RefObjKey), name));
			_child.guideObject.transformTarget.SetParent(referenceInfo.transform, false);
			_child.guideObject.parent = referenceInfo.transform;
			_child.guideObject.changeAmount.OnChange();
			_child.parentInfo = this;
		}

		// Token: 0x06001C8A RID: 7306 RVA: 0x000B79F8 File Offset: 0x000B5BF8
		public override void OnDetach()
		{
		}

		// Token: 0x06001C8B RID: 7307 RVA: 0x000B79FC File Offset: 0x000B5BFC
		public override void OnSelect(bool _select)
		{
			int layer = LayerMask.NameToLayer((!_select) ? "Studio/Select" : "Studio/Col");
			this.lookAtInfo.layer = layer;
			foreach (OCIChar.BoneInfo boneInfo in this.listBones)
			{
				boneInfo.layer = layer;
			}
			foreach (OCIChar.IKInfo ikinfo in this.listIKTarget)
			{
				ikinfo.layer = layer;
			}
		}

		// Token: 0x06001C8C RID: 7308 RVA: 0x000B7ACC File Offset: 0x000B5CCC
		public override void OnDetachChild(ObjectCtrlInfo _child)
		{
			int count = this.oiCharInfo.child.Count;
			for (int i = 0; i < count; i++)
			{
				if (this.oiCharInfo.child[i].Remove(_child.objectInfo))
				{
					break;
				}
			}
			_child.parentInfo = null;
		}

		// Token: 0x06001C8D RID: 7309 RVA: 0x000B7B2C File Offset: 0x000B5D2C
		public override void OnSavePreprocessing()
		{
			base.OnSavePreprocessing();
			using (MemoryStream memoryStream = new MemoryStream())
			{
				using (BinaryWriter binaryWriter = new BinaryWriter(memoryStream))
				{
					this.neckLookCtrl.Save(binaryWriter);
					this.oiCharInfo.neckByteData = memoryStream.ToArray();
				}
			}
			using (MemoryStream memoryStream2 = new MemoryStream())
			{
				using (BinaryWriter binaryWriter2 = new BinaryWriter(memoryStream2))
				{
					this.charInfo.eyeLookCtrl.Save(binaryWriter2);
					this.oiCharInfo.eyesByteData = memoryStream2.ToArray();
				}
			}
			AnimatorStateInfo currentAnimatorStateInfo = this.charInfo.animBody.GetCurrentAnimatorStateInfo(0);
			this.oiCharInfo.animeNormalizedTime = currentAnimatorStateInfo.normalizedTime;
			this.oiCharInfo.dicAccessGroup = new Dictionary<int, TreeNodeObject.TreeState>();
			this.oiCharInfo.dicAccessNo = new Dictionary<int, TreeNodeObject.TreeState>();
			foreach (KeyValuePair<int, OCIChar.AccessPointInfo> keyValuePair in this.dicAccessPoint)
			{
				this.oiCharInfo.dicAccessGroup.Add(keyValuePair.Key, keyValuePair.Value.root.treeState);
				foreach (KeyValuePair<int, TreeNodeObject> keyValuePair2 in keyValuePair.Value.child)
				{
					this.oiCharInfo.dicAccessNo.Add(keyValuePair2.Key, keyValuePair2.Value.treeState);
				}
			}
		}

		// Token: 0x170002DB RID: 731
		// (get) Token: 0x06001C8E RID: 7310 RVA: 0x000B7D38 File Offset: 0x000B5F38
		// (set) Token: 0x06001C8F RID: 7311 RVA: 0x000B7D48 File Offset: 0x000B5F48
		public override float animeSpeed
		{
			get
			{
				return this.oiCharInfo.animeSpeed;
			}
			set
			{
				this.oiCharInfo.animeSpeed = value;
				if (this.charInfo.animBody)
				{
					this.charInfo.animBody.speed = value;
				}
			}
		}

		// Token: 0x06001C90 RID: 7312 RVA: 0x000B7D7C File Offset: 0x000B5F7C
		public override void OnVisible(bool _visible)
		{
			this.charInfo.human.SetVisibleAll(_visible);
			this.optionItemCtrl.outsideVisible = _visible;
		}

		// Token: 0x06001C91 RID: 7313 RVA: 0x000B7D9C File Offset: 0x000B5F9C
		public void InitKinematic(GameObject _target, FullBodyBipedIK _fullBodyBipedIK, LookAtRotator _neckLook, DynamicBone[] _hairDynamic, DynamicBone[] _skirtDynamic)
		{
			this.neckLookCtrl = _neckLook;
			this.neckPtnOld = this.charStatus.neckLookPtn;
			this.skirtDynamic = _skirtDynamic;
			this.InitFK(_target);
			foreach (OCIChar.IKInfo ikinfo in this.listIKTarget)
			{
				ikinfo.active = false;
			}
			this.fullBodyIK = _fullBodyBipedIK;
			this.fullBodyIK.enabled = false;
		}

		// Token: 0x06001C92 RID: 7314 RVA: 0x000B7E34 File Offset: 0x000B6034
		public void InitFK(GameObject _target)
		{
			if (this.fkCtrl == null)
			{
				this.fkCtrl = _target.AddComponent<FKCtrl>();
			}
			this.fkCtrl.InitBones(this.oiCharInfo, this.charInfo);
			this.fkCtrl.enabled = false;
			foreach (OCIChar.BoneInfo boneInfo in this.listBones)
			{
				boneInfo.active = false;
			}
		}

		// Token: 0x06001C93 RID: 7315 RVA: 0x000B7ED0 File Offset: 0x000B60D0
		public void ActiveKinematicMode(OICharInfo.KinematicMode _mode, bool _active, bool _force)
		{
			if (_mode != OICharInfo.KinematicMode.IK)
			{
				if (_mode == OICharInfo.KinematicMode.FK)
				{
					if (_force || this.fkCtrl.enabled != _active)
					{
						this.fkCtrl.enabled = _active;
						this.oiCharInfo.enableFK = _active;
						OIBoneInfo.BoneGroup[] parts = FKCtrl.parts;
						for (int i = 0; i < parts.Length; i++)
						{
							this.ActiveFK(parts[i], _active && this.oiCharInfo.activeFK[i], true);
						}
						if (this.oiCharInfo.enableFK)
						{
							this.ActiveKinematicMode(OICharInfo.KinematicMode.IK, false, _force);
						}
					}
				}
			}
			else if (_force || this.fullBodyIK.enabled != _active)
			{
				this.fullBodyIK.enabled = _active;
				this.oiCharInfo.enableIK = _active;
				for (int j = 0; j < 5; j++)
				{
					this.ActiveIK((OIBoneInfo.BoneGroup)(1 << j), _active && this.oiCharInfo.activeIK[j], true);
				}
				if (this.oiCharInfo.enableIK)
				{
					this.ActiveKinematicMode(OICharInfo.KinematicMode.FK, false, _force);
				}
			}
		}

		// Token: 0x06001C94 RID: 7316 RVA: 0x000B800C File Offset: 0x000B620C
		public void ActiveFK(OIBoneInfo.BoneGroup _group, bool _active, bool _force = false)
		{
			//OCIChar callback = new OCIChar();
			//callback.parts = FKCtrl.parts;
			//int i;
			//for (i = 0; i < callback.parts.Length; i++)
			//{
			//	if ((_group & callback.parts[i]) != (OIBoneInfo.BoneGroup)0)
			//	{
			//		if (_force || Utility.SetStruct<bool>(ref this.oiCharInfo.activeFK[i], _active))
			//		{
			//			this.ActiveFKGroup(callback.parts[i], _active);
			//			if (callback.parts[i] == OIBoneInfo.BoneGroup.Hair)
			//			{
			//				AddObjectAssist.ResetHairTransfrom(this, (this.charInfo.sex != 1) ? Singleton<Info>.Instance.dicMaleBoneInfo : Singleton<Info>.Instance.dicFemaleBoneInfo);
			//			}
			//			foreach (OCIChar.BoneInfo boneInfo in from v in this.listBones
			//			where (v.boneGroup & callback.parts[i]) != (OIBoneInfo.BoneGroup)0
			//			select v)
			//			{
			//				boneInfo.active = (_force ? _active : (this.oiCharInfo.enableFK & this.oiCharInfo.activeFK[i]));
			//			}
			//		}
			//	}
			//}
		}

		// Token: 0x06001C95 RID: 7317 RVA: 0x000B818C File Offset: 0x000B638C
		public bool IsFKGroup(OIBoneInfo.BoneGroup _group)
		{
			return this.listBones.Any((OCIChar.BoneInfo v) => (v.boneGroup & _group) != (OIBoneInfo.BoneGroup)0);
		}

		// Token: 0x06001C96 RID: 7318 RVA: 0x000B81C0 File Offset: 0x000B63C0
		private void ActiveFKGroup(OIBoneInfo.BoneGroup _group, bool _active)
		{
			if (_group != OIBoneInfo.BoneGroup.Body)
			{
				if (_group != OIBoneInfo.BoneGroup.RightHand)
				{
					if (_group != OIBoneInfo.BoneGroup.LeftHand)
					{
						if (_group != OIBoneInfo.BoneGroup.Hair)
						{
							if (_group != OIBoneInfo.BoneGroup.Neck)
							{
								if (_group != OIBoneInfo.BoneGroup.Breast)
								{
									if (_group == OIBoneInfo.BoneGroup.Skirt)
									{
										if (!this.skirtDynamic.IsNullOrEmpty<DynamicBone>())
										{
											for (int i = 0; i < this.skirtDynamic.Length; i++)
											{
												this.skirtDynamic[i].enabled = !_active;
											}
										}
									}
								}
							}
							else if (_active)
							{
								this.neckPtnOld = this.charStatus.neckLookPtn;
								this.ChangeLookNeckPtn(3);
							}
							else
							{
								this.ChangeLookNeckPtn(this.neckPtnOld);
							}
						}
						else if (!this.hairDynamic.IsNullOrEmpty<DynamicBone>())
						{
							foreach (DynamicBone dynamicBone in this.hairDynamic)
							{
								dynamicBone.enabled = !_active;
							}
						}
					}
				}
			}
			this.fkCtrl.SetEnable(_group, _active);
		}

		// Token: 0x06001C97 RID: 7319 RVA: 0x000B82F4 File Offset: 0x000B64F4
		public void ActiveIK(OIBoneInfo.BoneGroup _group, bool _active, bool _force = false)
		{
			for (int i = 0; i < 5; i++)
			{
				OIBoneInfo.BoneGroup target = (OIBoneInfo.BoneGroup)(1 << i);
				if ((_group & target) != (OIBoneInfo.BoneGroup)0)
				{
					if (_force || Utility.SetStruct<bool>(ref this.oiCharInfo.activeIK[i], _active))
					{
						this.ActiveIKGroup(target, _active);
						foreach (OCIChar.IKInfo ikinfo in from v in this.listIKTarget
						where (v.boneGroup & target) != (OIBoneInfo.BoneGroup)0
						select v)
						{
							ikinfo.active = (_force ? _active : (this.oiCharInfo.enableIK & this.oiCharInfo.activeIK[i]));
						}
					}
				}
			}
		}

		// Token: 0x06001C98 RID: 7320 RVA: 0x000B83EC File Offset: 0x000B65EC
		private void ActiveIKGroup(OIBoneInfo.BoneGroup _group, bool _active)
		{
			FullBodyBipedIK fullBodyBipedIK = this.fullBodyIK;
			IKSolverFullBodyBiped solver = fullBodyBipedIK.solver;
			float num = (!_active) ? 0f : 1f;
			switch (_group)
			{
			case OIBoneInfo.BoneGroup.Body:
				solver.spineMapping.twistWeight = num;
				solver.SetEffectorWeights(FullBodyBipedEffector.Body, num, num);
				break;
			case OIBoneInfo.BoneGroup.RightLeg:
				solver.rightLegMapping.weight = num;
				solver.SetEffectorWeights(FullBodyBipedEffector.RightThigh, num, num);
				solver.SetEffectorWeights(FullBodyBipedEffector.RightFoot, num, num);
				break;
			default:
				if (_group == OIBoneInfo.BoneGroup.LeftArm)
				{
					solver.leftArmMapping.weight = num;
					solver.SetEffectorWeights(FullBodyBipedEffector.LeftShoulder, num, num);
					solver.SetEffectorWeights(FullBodyBipedEffector.LeftHand, num, num);
				}
				break;
			case OIBoneInfo.BoneGroup.LeftLeg:
				solver.leftLegMapping.weight = num;
				solver.SetEffectorWeights(FullBodyBipedEffector.LeftThigh, num, num);
				solver.SetEffectorWeights(FullBodyBipedEffector.LeftFoot, num, num);
				break;
			case OIBoneInfo.BoneGroup.RightArm:
				solver.rightArmMapping.weight = num;
				solver.SetEffectorWeights(FullBodyBipedEffector.RightShoulder, num, num);
				solver.SetEffectorWeights(FullBodyBipedEffector.RightHand, num, num);
				break;
			}
		}

		// Token: 0x06001C99 RID: 7321 RVA: 0x000B84F8 File Offset: 0x000B66F8
		public void EnableExpressionCategory(int _category, bool _value)
		{
			this.oiCharInfo.expression[_category] = _value;
			this.charInfo.EnableExpressionCategory(_category, _value);
		}

		// Token: 0x170002DC RID: 732
		// (get) Token: 0x06001C9A RID: 7322 RVA: 0x000B8518 File Offset: 0x000B6718
		// (set) Token: 0x06001C9B RID: 7323 RVA: 0x000B853C File Offset: 0x000B673C
		public Vector2 animePattern
		{
			get
			{
				return new Vector2(this.oiCharInfo.animePattern[0], this.oiCharInfo.animePattern[1]);
			}
			set
			{
				this.animePattern1 = value.x;
				this.animePattern2 = value.y;
			}
		}

		// Token: 0x170002DD RID: 733
		// (get) Token: 0x06001C9C RID: 7324 RVA: 0x000B8558 File Offset: 0x000B6758
		// (set) Token: 0x06001C9D RID: 7325 RVA: 0x000B8568 File Offset: 0x000B6768
		public float animePattern1
		{
			get
			{
				return this.oiCharInfo.animePattern[0];
			}
			set
			{
				this.oiCharInfo.animePattern[0] = value;
				if (this.isAnimeMotion && this.animatorInfo.isMotion)
				{
					this.charInfo.SetAnimatorParamFloat(this.animatorInfo.motion, this.oiCharInfo.animePattern[0]);
				}
				if (this.optionItemCtrl)
				{
					this.optionItemCtrl.SetMotion(this.oiCharInfo.animePattern[0]);
				}
			}
		}

		// Token: 0x170002DE RID: 734
		// (get) Token: 0x06001C9E RID: 7326 RVA: 0x000B85EC File Offset: 0x000B67EC
		// (set) Token: 0x06001C9F RID: 7327 RVA: 0x000B85FC File Offset: 0x000B67FC
		public float animePattern2
		{
			get
			{
				return this.oiCharInfo.animePattern[1];
			}
			set
			{
				this.oiCharInfo.animePattern[1] = value;
				if (this.isAnimeMotion && this.animatorInfo.isStroke)
				{
					this.charInfo.SetAnimatorParamFloat(this.animatorInfo.stroke, this.oiCharInfo.animePattern[1]);
				}
			}
		}

		// Token: 0x170002DF RID: 735
		// (get) Token: 0x06001CA0 RID: 7328 RVA: 0x000B8658 File Offset: 0x000B6858
		public float[] animeOptionParam
		{
			get
			{
				return this.oiCharInfo.animeOptionParam;
			}
		}

		// Token: 0x170002E0 RID: 736
		// (get) Token: 0x06001CA1 RID: 7329 RVA: 0x000B8668 File Offset: 0x000B6868
		// (set) Token: 0x06001CA2 RID: 7330 RVA: 0x000B8678 File Offset: 0x000B6878
		public float animeOptionParam1
		{
			get
			{
				return this.oiCharInfo.animeOptionParam[0];
			}
			set
			{
				this.oiCharInfo.animeOptionParam[0] = value;
				if (this.oiCharInfo.sex == 0 && this.isHAnime && this.animatorInfo.isHeight)
				{
					this.charInfo.SetAnimatorParamFloat(this.animatorInfo.height, value);
				}
			}
		}

		// Token: 0x170002E1 RID: 737
		// (get) Token: 0x06001CA3 RID: 7331 RVA: 0x000B86D8 File Offset: 0x000B68D8
		// (set) Token: 0x06001CA4 RID: 7332 RVA: 0x000B86E8 File Offset: 0x000B68E8
		public float animeOptionParam2
		{
			get
			{
				return this.oiCharInfo.animeOptionParam[1];
			}
			set
			{
				this.oiCharInfo.animeOptionParam[1] = value;
				if (this.oiCharInfo.sex == 0 && this.isHAnime && this.animatorInfo.isBreast)
				{
					this.charInfo.SetAnimatorParamFloat(this.animatorInfo.breast, value);
				}
			}
		}

		// Token: 0x06001CA5 RID: 7333 RVA: 0x000B8748 File Offset: 0x000B6948
		public virtual void LoadAnime(int _group, int _category, int _no, float _normalizedTime = 0f)
		{
		}

		// Token: 0x06001CA6 RID: 7334 RVA: 0x000B874C File Offset: 0x000B694C
		public virtual void ChangeHandAnime(int _type, int _ptn)
		{
			this.oiCharInfo.handPtn[_type] = _ptn;
			this.handAnimeCtrl[_type].ptn = _ptn;
		}

		// Token: 0x06001CA7 RID: 7335 RVA: 0x000B876C File Offset: 0x000B696C
		public virtual void RestartAnime()
		{
			AnimatorStateInfo animatorStateInfo = this.charInfo.GetAnimatorStateInfo(0);
			this.charInfo.animBody.Play(animatorStateInfo.shortNameHash, 0, 0f);
		}

		// Token: 0x06001CA8 RID: 7336 RVA: 0x000B87A4 File Offset: 0x000B69A4
		public virtual void ChangeChara(string _path)
		{
			foreach (OCIChar.BoneInfo boneInfo in (from v in this.listBones
			where v.boneGroup == OIBoneInfo.BoneGroup.Hair
			select v).ToList<OCIChar.BoneInfo>())
			{
				Singleton<GuideObjectManager>.Instance.Delete(boneInfo.guideObject, true);
			}
			this.listBones = (from v in this.listBones
			where v.boneGroup != OIBoneInfo.BoneGroup.Hair
			select v).ToList<OCIChar.BoneInfo>();
			int[] array = (from b in this.oiCharInfo.bones
			where b.Value.@group == OIBoneInfo.BoneGroup.Hair
			select b.Key).ToArray<int>();
			for (int k = 0; k < array.Length; k++)
			{
				this.oiCharInfo.bones.Remove(array[k]);
			}
			Transform target = this.charInfo.eyeLookCtrl.GetTarget();
			Dictionary<int, List<TreeNodeObject>> dictionary = new Dictionary<int, List<TreeNodeObject>>();
			OCIChar.AccessPointInfo accessPointInfo = null;
			if (this.dicAccessPoint.TryGetValue(0, out accessPointInfo))
			{
				foreach (KeyValuePair<int, TreeNodeObject> keyValuePair in accessPointInfo.child)
				{
					if (!keyValuePair.Value.child.IsNullOrEmpty<TreeNodeObject>())
					{
						List<TreeNodeObject> list = new List<TreeNodeObject>();
						foreach (TreeNodeObject treeNodeObject in keyValuePair.Value.child.ToArray())
						{
							Singleton<Studio>.Instance.treeNodeCtrl.SetParent(treeNodeObject, null);
							list.Add(treeNodeObject);
						}
						dictionary.Add(keyValuePair.Key, list);
					}
				}
			}
			this.charInfo.human.Load(_path, -1);
			CharaInfo charaInfo = new CharaInfo();
			charaInfo.Load(_path);
			this.charStatus.name = charaInfo.name;
			this.treeNodeObject.textName = this.charStatus.name;
			AddObjectAssist.InitHairBone(this, Singleton<Info>.Instance.dicFemaleBoneInfo);
			this.skirtDynamic = AddObjectFemale.GetSkirtDynamic(this.charInfo);
			this.InitFK(null);
            foreach (var callback in FKCtrl.parts.Select((OIBoneInfo.BoneGroup p, int i) => new
            {
                p,
                i
            }))
            {
                this.ActiveFK(callback.p, this.oiCharInfo.activeFK[callback.i], this.oiCharInfo.activeFK[callback.i]);
            }
            this.ActiveKinematicMode(OICharInfo.KinematicMode.FK, this.oiCharInfo.enableFK, true);
			this.ChangeEyesOpen(this.charStatus.eyesOpenMax);
			this.ChangeBlink(this.charStatus.eyesBlink);
			this.ChangeMouthOpen(this.oiCharInfo.mouthOpen);
			this.ChangeLookEyesPtn(this.charStatus.eyesLookPtn, false);
			this.charInfo.eyeLookCtrl.SetTarget(target);
			this.ChangeLookNeckPtn(this.charStatus.neckLookPtn);
			foreach (KeyValuePair<int, List<TreeNodeObject>> keyValuePair2 in dictionary)
			{
				TreeNodeObject parent = accessPointInfo.child[keyValuePair2.Key];
				foreach (TreeNodeObject node in keyValuePair2.Value)
				{
					Singleton<Studio>.Instance.treeNodeCtrl.SetParent(node, parent);
				}
			}
		}

		// Token: 0x06001CA9 RID: 7337 RVA: 0x000B8C10 File Offset: 0x000B6E10
		public virtual void SetClothesStateAll(int _state)
		{
			//int[] array;
			//if (this.oiCharInfo.sex == 0)
			//{
			//	(array = new int[1])[0] = 1;
			//}
			//else
			//{
			//	RuntimeHelpers.InitializeArray(array = new int[3], fieldof(<PrivateImplementationDetails>.$field-1EA7D6E45780CE264661819C867EEEC701E67830).FieldHandle);
			//}
			//int[] source = array;
			//for (int i = 0; i < this.charStatus.clothesState.Length; i++)
			//{
			//	this.charStatus.clothesState[i] = ((!source.Contains(i)) ? ((byte)_state) : ((_state <= 0) ? 0 : 2));
			//}
		}

		// Token: 0x06001CAA RID: 7338 RVA: 0x000B8C9C File Offset: 0x000B6E9C
		public virtual void SetClothesState(int _id, byte _state)
		{
			this.charStatus.clothesState[_id] = _state;
		}

		// Token: 0x06001CAB RID: 7339 RVA: 0x000B8CAC File Offset: 0x000B6EAC
		public virtual void ShowAccessory(int _id, bool _flag)
		{
			this.charStatus.showAccessory[_id] = _flag;
			this.charInfo.ShowAccessory(_id, _flag);
		}

		// Token: 0x06001CAC RID: 7340 RVA: 0x000B8CCC File Offset: 0x000B6ECC
		public virtual void LoadClothesFile(string _path)
		{
			this.charInfo.LoadCoordinate(_path);
		}

		// Token: 0x06001CAD RID: 7341 RVA: 0x000B8CDC File Offset: 0x000B6EDC
		public virtual void SetSiruFlags(CharDefine.SiruParts _parts, byte _state)
		{
			this.oiCharInfo.siru[(int)_parts] = _state;
		}

		// Token: 0x06001CAE RID: 7342 RVA: 0x000B8CEC File Offset: 0x000B6EEC
		public virtual byte GetSiruFlags(CharDefine.SiruParts _parts)
		{
			return 0;
		}

		// Token: 0x06001CAF RID: 7343 RVA: 0x000B8CF0 File Offset: 0x000B6EF0
		public virtual void SetTuyaRate(float _value)
		{
		}

		// Token: 0x06001CB0 RID: 7344 RVA: 0x000B8CF4 File Offset: 0x000B6EF4
		public virtual void SetNipStand(float _value)
		{
		}

		// Token: 0x06001CB1 RID: 7345 RVA: 0x000B8CF8 File Offset: 0x000B6EF8
		public virtual void SetVisibleSimple(bool _flag)
		{
		}

		// Token: 0x06001CB2 RID: 7346 RVA: 0x000B8CFC File Offset: 0x000B6EFC
		public bool GetVisibleSimple()
		{
			return this.oiCharInfo.visibleSimple;
		}

		// Token: 0x06001CB3 RID: 7347 RVA: 0x000B8D0C File Offset: 0x000B6F0C
		public virtual void SetSimpleColor(Color _color)
		{
			if (this.oiCharInfo.sex != 0)
			{
				return;
			}
			this.oiCharInfo.simpleColor = _color;
		}

		// Token: 0x06001CB4 RID: 7348 RVA: 0x000B8D2C File Offset: 0x000B6F2C
		public virtual void SetVisibleSon(bool _flag)
		{
			if (this.oiCharInfo.sex != 0)
			{
				return;
			}
			this.oiCharInfo.visibleSon = _flag;
			Male male = this.charInfo.human as Male;
			if (male)
			{
				male.SetVisibleSon(_flag);
			}
		}

		// Token: 0x06001CB5 RID: 7349 RVA: 0x000B8D7C File Offset: 0x000B6F7C
		public virtual void ChangeFaceOption(int _type)
		{
			if (this.oiCharInfo.sex == 0)
			{
				return;
			}
			this.oiCharInfo.faceOption = _type;
			Female female = this.charInfo.human as Female;
			female.ChangeGagItem((GAG_ITEM)_type);
		}

		// Token: 0x06001CB6 RID: 7350 RVA: 0x000B8DC0 File Offset: 0x000B6FC0
		public virtual void SetTearsLv(float _state)
		{
		}

		// Token: 0x06001CB7 RID: 7351 RVA: 0x000B8DC4 File Offset: 0x000B6FC4
		public virtual float GetTearsLv()
		{
			return 0f;
		}

		// Token: 0x06001CB8 RID: 7352 RVA: 0x000B8DCC File Offset: 0x000B6FCC
		public virtual void SetHohoAkaRate(float _value)
		{
		}

		// Token: 0x06001CB9 RID: 7353 RVA: 0x000B8DD0 File Offset: 0x000B6FD0
		public virtual float GetHohoAkaRate()
		{
			return -1f;
		}

		// Token: 0x06001CBA RID: 7354 RVA: 0x000B8DD8 File Offset: 0x000B6FD8
		public virtual void ChangeLookEyesPtn(int _ptn, bool _force = false)
		{
			int num = (!_force) ? this.charStatus.eyesLookPtn : -1;
			if (_ptn == 4 && num != 4)
			{
				this.charInfo.eyeLookCtrl.SetTarget(this.lookAtInfo.target);
				this.lookAtInfo.active = true;
			}
			else if (num == 4 && _ptn != 4)
			{
				this.charInfo.eyeLookCtrl.SetTarget(Camera.main.transform);
				this.lookAtInfo.active = false;
			}
			this.charStatus.eyesLookPtn = _ptn;
			this.charInfo.ChangeLookEyesPtn(_ptn, _force);
		}

		// Token: 0x06001CBB RID: 7355 RVA: 0x000B8E84 File Offset: 0x000B7084
		public virtual void ChangeLookNeckPtn(int _ptn)
		{
			this.charStatus.neckLookPtn = _ptn;
			this.charInfo.ChangeLookNeckPtn(_ptn, false);
		}

		// Token: 0x06001CBC RID: 7356 RVA: 0x000B8EA0 File Offset: 0x000B70A0
		public virtual void ChangeEyesOpen(float _value)
		{
			this.charInfo.ChangeEyesOpenMax(_value);
			this.charStatus.eyesOpen = _value;
		}

		// Token: 0x06001CBD RID: 7357 RVA: 0x000B8EBC File Offset: 0x000B70BC
		public virtual void ChangeBlink(bool _value)
		{
			this.charInfo.ChangeEyesBlinkFlag(_value);
		}

		// Token: 0x06001CBE RID: 7358 RVA: 0x000B8ECC File Offset: 0x000B70CC
		public virtual void ChangeMouthOpen(float _value)
		{
			OICharInfo oiCharInfo = this.oiCharInfo;
			this.charStatus.mouthFixed = _value;
			oiCharInfo.mouthOpen = _value;
			this.charInfo.human.OpenMouth((!this.voiceCtrl.isPlay || !this.oiCharInfo.lipSync) ? _value : 1f);
		}

		// Token: 0x06001CBF RID: 7359 RVA: 0x000B8F30 File Offset: 0x000B7130
		public virtual void ChangeLipSync(bool _value)
		{
			this.oiCharInfo.lipSync = _value;
			this.charInfo.human.lipSync.Hold = !_value;
		}

		// Token: 0x06001CC0 RID: 7360 RVA: 0x000B8F58 File Offset: 0x000B7158
		public virtual void SetVoice()
		{
			this.ChangeLipSync(this.oiCharInfo.lipSync);
		}

		// Token: 0x06001CC1 RID: 7361 RVA: 0x000B8F6C File Offset: 0x000B716C
		public virtual void AddVoice(int _group, int _category, int _no)
		{
			this.voiceCtrl.list.Add(new VoiceCtrl.VoiceInfo(_group, _category, _no));
		}

		// Token: 0x06001CC2 RID: 7362 RVA: 0x000B8F88 File Offset: 0x000B7188
		public virtual void DeleteVoice(int _index)
		{
			this.voiceCtrl.list.RemoveAt(_index);
			if (this.voiceCtrl.index == _index)
			{
				this.voiceCtrl.index = -1;
				this.voiceCtrl.Stop();
			}
		}

		// Token: 0x06001CC3 RID: 7363 RVA: 0x000B8FC4 File Offset: 0x000B71C4
		public virtual void DeleteAllVoice()
		{
			this.voiceCtrl.list.Clear();
			this.voiceCtrl.Stop();
		}

		// Token: 0x06001CC4 RID: 7364 RVA: 0x000B8FE4 File Offset: 0x000B71E4
		public virtual bool PlayVoice(int _index)
		{
			return this.voiceCtrl.Play((_index >= 0) ? _index : 0);
		}

		// Token: 0x06001CC5 RID: 7365 RVA: 0x000B9000 File Offset: 0x000B7200
		public virtual void StopVoice()
		{
			this.voiceCtrl.Stop();
		}

		// Token: 0x04001F7F RID: 8063
		public Dictionary<int, OCIChar.AccessPointInfo> dicAccessPoint = new Dictionary<int, OCIChar.AccessPointInfo>();

		// Token: 0x04001F80 RID: 8064
		public List<OCIChar.BoneInfo> listBones = new List<OCIChar.BoneInfo>();

		// Token: 0x04001F81 RID: 8065
		public List<OCIChar.IKInfo> listIKTarget = new List<OCIChar.IKInfo>();

		// Token: 0x04001F82 RID: 8066
		public OCIChar.LookAtInfo lookAtInfo;

		// Token: 0x04001F83 RID: 8067
		public ChaControl charInfo;

		// Token: 0x04001F84 RID: 8068
		public GameObject[] hands = new GameObject[2];

		// Token: 0x04001F85 RID: 8069
		public HandAnimeCtrl[] handAnimeCtrl = new HandAnimeCtrl[2];

		// Token: 0x04001F86 RID: 8070
		public FKCtrl fkCtrl;

		// Token: 0x04001F87 RID: 8071
		public IKCtrl ikCtrl;

		// Token: 0x04001F88 RID: 8072
		public FullBodyBipedIK fullBodyIK;

		// Token: 0x04001F89 RID: 8073
		public LookAtRotator neckLookCtrl;

		// Token: 0x04001F8A RID: 8074
		public DynamicBone[] skirtDynamic;

		// Token: 0x04001F8B RID: 8075
		public OptionItemCtrl optionItemCtrl;

		// Token: 0x04001F8C RID: 8076
		public bool isAnimeMotion;

		// Token: 0x04001F8D RID: 8077
		public bool isHAnime;

		// Token: 0x04001F8E RID: 8078
		public CharAnimeCtrl charAnimeCtrl;

		// Token: 0x04001F8F RID: 8079
		public OCIChar.AnimatorInfo animatorInfo;

		// Token: 0x04001F90 RID: 8080
		public Dictionary<TreeNodeObject, int> dicAccessoryPoint = new Dictionary<TreeNodeObject, int>();

		// Token: 0x02000489 RID: 1161
		public class BoneInfo
		{
			// Token: 0x06001CCB RID: 7371 RVA: 0x000B9064 File Offset: 0x000B7264
			public BoneInfo(GuideObject _guideObject, OIBoneInfo _boneInfo)
			{
				this.guideObject = _guideObject;
				this.boneInfo = _boneInfo;
			}

			// Token: 0x170002E2 RID: 738
			// (get) Token: 0x06001CCC RID: 7372 RVA: 0x000B907C File Offset: 0x000B727C
			// (set) Token: 0x06001CCD RID: 7373 RVA: 0x000B9084 File Offset: 0x000B7284
			public GuideObject guideObject { get; private set; }

			// Token: 0x170002E3 RID: 739
			// (get) Token: 0x06001CCE RID: 7374 RVA: 0x000B9090 File Offset: 0x000B7290
			// (set) Token: 0x06001CCF RID: 7375 RVA: 0x000B9098 File Offset: 0x000B7298
			public OIBoneInfo boneInfo { get; private set; }

			// Token: 0x170002E4 RID: 740
			// (get) Token: 0x06001CD0 RID: 7376 RVA: 0x000B90A4 File Offset: 0x000B72A4
			public GameObject gameObject
			{
				get
				{
					if (this.m_GameObject == null)
					{
						this.m_GameObject = this.guideObject.gameObject;
					}
					return this.m_GameObject;
				}
			}

			// Token: 0x170002E5 RID: 741
			// (get) Token: 0x06001CD1 RID: 7377 RVA: 0x000B90D0 File Offset: 0x000B72D0
			// (set) Token: 0x06001CD2 RID: 7378 RVA: 0x000B90F4 File Offset: 0x000B72F4
			public bool active
			{
				get
				{
					return this.gameObject != null && this.gameObject.activeSelf;
				}
				set
				{
					if (this.gameObject)
					{
						this.gameObject.SetActive(value);
					}
				}
			}

			// Token: 0x170002E6 RID: 742
			// (get) Token: 0x06001CD3 RID: 7379 RVA: 0x000B9114 File Offset: 0x000B7314
			public OIBoneInfo.BoneGroup boneGroup
			{
				get
				{
					return this.boneInfo.group;
				}
			}

			// Token: 0x170002E7 RID: 743
			// (get) Token: 0x06001CD4 RID: 7380 RVA: 0x000B9124 File Offset: 0x000B7324
			// (set) Token: 0x06001CD5 RID: 7381 RVA: 0x000B9134 File Offset: 0x000B7334
			public float scaleRate
			{
				get
				{
					return this.guideObject.scaleRate;
				}
				set
				{
					this.guideObject.scaleRate = value;
				}
			}

			// Token: 0x170002E8 RID: 744
			// (set) Token: 0x06001CD6 RID: 7382 RVA: 0x000B9144 File Offset: 0x000B7344
			public int layer
			{
				set
				{
					this.guideObject.SetLayer(this.gameObject, value);
				}
			}

			// Token: 0x04001F99 RID: 8089
			private GameObject m_GameObject;
		}

		// Token: 0x0200048A RID: 1162
		public class IKInfo
		{
			// Token: 0x06001CD7 RID: 7383 RVA: 0x000B9158 File Offset: 0x000B7358
			public IKInfo(GuideObject _guideObject, OIIKTargetInfo _targetInfo, Transform _base, Transform _target, Transform _bone)
			{
				this.guideObject = _guideObject;
				this.targetInfo = _targetInfo;
				this.baseObject = _base;
				this.targetObject = _target;
				this.boneObject = _bone;
			}

			// Token: 0x170002E9 RID: 745
			// (get) Token: 0x06001CD8 RID: 7384 RVA: 0x000B9188 File Offset: 0x000B7388
			// (set) Token: 0x06001CD9 RID: 7385 RVA: 0x000B9190 File Offset: 0x000B7390
			public GuideObject guideObject { get; private set; }

			// Token: 0x170002EA RID: 746
			// (get) Token: 0x06001CDA RID: 7386 RVA: 0x000B919C File Offset: 0x000B739C
			// (set) Token: 0x06001CDB RID: 7387 RVA: 0x000B91A4 File Offset: 0x000B73A4
			public OIIKTargetInfo targetInfo { get; private set; }

			// Token: 0x170002EB RID: 747
			// (get) Token: 0x06001CDC RID: 7388 RVA: 0x000B91B0 File Offset: 0x000B73B0
			// (set) Token: 0x06001CDD RID: 7389 RVA: 0x000B91B8 File Offset: 0x000B73B8
			public Transform baseObject { get; private set; }

			// Token: 0x170002EC RID: 748
			// (get) Token: 0x06001CDE RID: 7390 RVA: 0x000B91C4 File Offset: 0x000B73C4
			// (set) Token: 0x06001CDF RID: 7391 RVA: 0x000B91CC File Offset: 0x000B73CC
			public Transform targetObject { get; private set; }

			// Token: 0x170002ED RID: 749
			// (get) Token: 0x06001CE0 RID: 7392 RVA: 0x000B91D8 File Offset: 0x000B73D8
			// (set) Token: 0x06001CE1 RID: 7393 RVA: 0x000B91E0 File Offset: 0x000B73E0
			public Transform boneObject { get; private set; }

			// Token: 0x170002EE RID: 750
			// (get) Token: 0x06001CE2 RID: 7394 RVA: 0x000B91EC File Offset: 0x000B73EC
			public GameObject gameObject
			{
				get
				{
					if (this.m_GameObject == null)
					{
						this.m_GameObject = this.guideObject.gameObject;
					}
					return this.m_GameObject;
				}
			}

			// Token: 0x170002EF RID: 751
			// (get) Token: 0x06001CE3 RID: 7395 RVA: 0x000B9218 File Offset: 0x000B7418
			// (set) Token: 0x06001CE4 RID: 7396 RVA: 0x000B923C File Offset: 0x000B743C
			public bool active
			{
				get
				{
					return this.gameObject != null && this.gameObject.activeSelf;
				}
				set
				{
					if (this.gameObject)
					{
						this.gameObject.SetActive(value);
					}
				}
			}

			// Token: 0x170002F0 RID: 752
			// (get) Token: 0x06001CE5 RID: 7397 RVA: 0x000B925C File Offset: 0x000B745C
			public OIBoneInfo.BoneGroup boneGroup
			{
				get
				{
					return this.targetInfo.group;
				}
			}

			// Token: 0x170002F1 RID: 753
			// (get) Token: 0x06001CE6 RID: 7398 RVA: 0x000B926C File Offset: 0x000B746C
			// (set) Token: 0x06001CE7 RID: 7399 RVA: 0x000B927C File Offset: 0x000B747C
			public float scaleRate
			{
				get
				{
					return this.guideObject.scaleRate;
				}
				set
				{
					this.guideObject.scaleRate = value;
				}
			}

			// Token: 0x170002F2 RID: 754
			// (set) Token: 0x06001CE8 RID: 7400 RVA: 0x000B928C File Offset: 0x000B748C
			public int layer
			{
				set
				{
					this.guideObject.SetLayer(this.gameObject, value);
				}
			}

			// Token: 0x06001CE9 RID: 7401 RVA: 0x000B92A0 File Offset: 0x000B74A0
			public void CopyBaseValue()
			{
				this.targetObject.position = ((!this.baseObject) ? ((!this.boneObject) ? Vector3.zero : this.boneObject.position) : this.baseObject.position);
				this.targetObject.eulerAngles = ((!this.baseObject) ? ((!this.boneObject) ? Vector3.zero : this.boneObject.eulerAngles) : this.baseObject.eulerAngles);
				this.guideObject.changeAmount.pos = this.targetObject.localPosition;
				this.guideObject.changeAmount.rot = ((!this.guideObject.enableRot) ? Vector3.zero : this.targetObject.localEulerAngles);
			}

			// Token: 0x06001CEA RID: 7402 RVA: 0x000B93A0 File Offset: 0x000B75A0
			public void CopyBone()
			{
				this.targetObject.position = this.boneObject.position;
				this.targetObject.eulerAngles = this.boneObject.eulerAngles;
				this.guideObject.changeAmount.pos = this.targetObject.localPosition;
				this.guideObject.changeAmount.rot = ((!this.guideObject.enableRot) ? Vector3.zero : this.targetObject.localEulerAngles);
			}

			// Token: 0x04001F9F RID: 8095
			private GameObject m_GameObject;
		}

		// Token: 0x0200048B RID: 1163
		public class LookAtInfo
		{
			// Token: 0x06001CEB RID: 7403 RVA: 0x000B942C File Offset: 0x000B762C
			public LookAtInfo(GuideObject _guideObject, LookAtTargetInfo _targetInfo)
			{
				this.guideObject = _guideObject;
				this.targetInfo = _targetInfo;
			}

			// Token: 0x170002F3 RID: 755
			// (get) Token: 0x06001CEC RID: 7404 RVA: 0x000B9444 File Offset: 0x000B7644
			// (set) Token: 0x06001CED RID: 7405 RVA: 0x000B944C File Offset: 0x000B764C
			public GuideObject guideObject { get; private set; }

			// Token: 0x170002F4 RID: 756
			// (get) Token: 0x06001CEE RID: 7406 RVA: 0x000B9458 File Offset: 0x000B7658
			// (set) Token: 0x06001CEF RID: 7407 RVA: 0x000B9460 File Offset: 0x000B7660
			public LookAtTargetInfo targetInfo { get; private set; }

			// Token: 0x170002F5 RID: 757
			// (get) Token: 0x06001CF0 RID: 7408 RVA: 0x000B946C File Offset: 0x000B766C
			public GameObject gameObject
			{
				get
				{
					if (this.m_GameObject == null)
					{
						this.m_GameObject = this.guideObject.gameObject;
					}
					return this.m_GameObject;
				}
			}

			// Token: 0x170002F6 RID: 758
			// (get) Token: 0x06001CF1 RID: 7409 RVA: 0x000B9498 File Offset: 0x000B7698
			public Transform target
			{
				get
				{
					return this.guideObject.transformTarget;
				}
			}

			// Token: 0x170002F7 RID: 759
			// (get) Token: 0x06001CF2 RID: 7410 RVA: 0x000B94A8 File Offset: 0x000B76A8
			// (set) Token: 0x06001CF3 RID: 7411 RVA: 0x000B94CC File Offset: 0x000B76CC
			public bool active
			{
				get
				{
					return this.gameObject != null && this.gameObject.activeSelf;
				}
				set
				{
					if (this.gameObject)
					{
						this.gameObject.SetActive(value);
					}
				}
			}

			// Token: 0x170002F8 RID: 760
			// (set) Token: 0x06001CF4 RID: 7412 RVA: 0x000B94EC File Offset: 0x000B76EC
			public int layer
			{
				set
				{
					this.guideObject.SetLayer(this.gameObject, value);
				}
			}

			// Token: 0x04001FA2 RID: 8098
			private GameObject m_GameObject;
		}

		// Token: 0x0200048C RID: 1164
		public class AnimatorInfo
		{
			// Token: 0x06001CF5 RID: 7413 RVA: 0x000B9500 File Offset: 0x000B7700
			public AnimatorInfo(Animator _animator)
			{
				AnimatorControllerParameter[] parameters = _animator.parameters;
				string[] names = new string[]
				{
					"height",
					"Height",
					"Blend"
				};
				this.height = this.GetName(parameters, names);
				string[] names2 = new string[]
				{
					"breast",
					"Bust"
				};
				this.breast = this.GetName(parameters, names2);
				string[] names3 = new string[]
				{
					"motion",
					"Pose"
				};
				this.motion = this.GetName(parameters, names3);
				string[] names4 = new string[]
				{
					"Stroke"
				};
				this.stroke = this.GetName(parameters, names4);
				string[] array = new string[]
				{
					"breast",
					"Breast",
					"Bust"
				};
				this.breastLayer = -1;
				for (int i = 0; i < _animator.layerCount; i++)
				{
					if (((ICollection<string>)array).Contains(_animator.GetLayerName(i)))
					{
						this.breastLayer = i;
						break;
					}
				}
			}

			// Token: 0x170002F9 RID: 761
			// (get) Token: 0x06001CF6 RID: 7414 RVA: 0x000B9618 File Offset: 0x000B7818
			// (set) Token: 0x06001CF7 RID: 7415 RVA: 0x000B9620 File Offset: 0x000B7820
			public string height { get; private set; }

			// Token: 0x170002FA RID: 762
			// (get) Token: 0x06001CF8 RID: 7416 RVA: 0x000B962C File Offset: 0x000B782C
			public bool isHeight
			{
				get
				{
					return !this.height.IsNullOrEmpty();
				}
			}

			// Token: 0x170002FB RID: 763
			// (get) Token: 0x06001CF9 RID: 7417 RVA: 0x000B963C File Offset: 0x000B783C
			// (set) Token: 0x06001CFA RID: 7418 RVA: 0x000B9644 File Offset: 0x000B7844
			public string breast { get; private set; }

			// Token: 0x170002FC RID: 764
			// (get) Token: 0x06001CFB RID: 7419 RVA: 0x000B9650 File Offset: 0x000B7850
			public bool isBreast
			{
				get
				{
					return !this.breast.IsNullOrEmpty();
				}
			}

			// Token: 0x170002FD RID: 765
			// (get) Token: 0x06001CFC RID: 7420 RVA: 0x000B9660 File Offset: 0x000B7860
			// (set) Token: 0x06001CFD RID: 7421 RVA: 0x000B9668 File Offset: 0x000B7868
			public string motion { get; private set; }

			// Token: 0x170002FE RID: 766
			// (get) Token: 0x06001CFE RID: 7422 RVA: 0x000B9674 File Offset: 0x000B7874
			public bool isMotion
			{
				get
				{
					return !this.motion.IsNullOrEmpty();
				}
			}

			// Token: 0x170002FF RID: 767
			// (get) Token: 0x06001CFF RID: 7423 RVA: 0x000B9684 File Offset: 0x000B7884
			// (set) Token: 0x06001D00 RID: 7424 RVA: 0x000B968C File Offset: 0x000B788C
			public string stroke { get; private set; }

			// Token: 0x17000300 RID: 768
			// (get) Token: 0x06001D01 RID: 7425 RVA: 0x000B9698 File Offset: 0x000B7898
			public bool isStroke
			{
				get
				{
					return !this.stroke.IsNullOrEmpty();
				}
			}

			// Token: 0x17000301 RID: 769
			// (get) Token: 0x06001D02 RID: 7426 RVA: 0x000B96A8 File Offset: 0x000B78A8
			// (set) Token: 0x06001D03 RID: 7427 RVA: 0x000B96B0 File Offset: 0x000B78B0
			public int breastLayer { get; private set; }

			// Token: 0x17000302 RID: 770
			// (get) Token: 0x06001D04 RID: 7428 RVA: 0x000B96BC File Offset: 0x000B78BC
			public bool isBreastLayer
			{
				get
				{
					return this.breastLayer != -1;
				}
			}

			// Token: 0x06001D05 RID: 7429 RVA: 0x000B96CC File Offset: 0x000B78CC
			private string GetName(AnimatorControllerParameter[] _parameters, string[] _names)
			{
				AnimatorControllerParameter animatorControllerParameter = _parameters.FirstOrDefault((AnimatorControllerParameter s) => ((ICollection<string>)_names).Contains(s.name));
				return (animatorControllerParameter == null) ? string.Empty : animatorControllerParameter.name;
			}
		}

		// Token: 0x0200048E RID: 1166
		public class AccessPointInfo
		{
			// Token: 0x06001D08 RID: 7432 RVA: 0x000B972C File Offset: 0x000B792C
			public AccessPointInfo(TreeNodeObject _root)
			{
				this.root = _root;
				this.child = new Dictionary<int, TreeNodeObject>();
			}

			// Token: 0x04001FA9 RID: 8105
			public TreeNodeObject root;

			// Token: 0x04001FAA RID: 8106
			public Dictionary<int, TreeNodeObject> child;
		}
	}
}
